package com.demo.fastjson;

import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.http.converter.HttpMessageConverter;

import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;

//3、 fastJson的一些使用方法
//
//（1）格式化日期格式：
//
//   @JSONField(format = "yyyy-MM-dd HH:mm:ss")
//   private Date createTime;//创建时间
//（2）若不想让接口返回一个属性，则设置 @JSONField 的 serialize 属性为false(不进行序列化)；
//
//   /*
//    * 不想返回该属性, serialize:是否进行序列化
//    */
//   @JSONField(serialize = false)
//   private String remarks;//备注信息

//使用fastjson代替自带json
//@Configuration
public class ConfigFastjson {

	@Bean
	public HttpMessageConverters fastJsonHttpMessageConverters() {
		// 1、需要先定义一个 convert 转换消息对象；
		FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
		// 2、添加 fastJson 的配置信息，比如: 是否要格式化返回的Json数据；
		FastJsonConfig fastJsonConfig = new FastJsonConfig();
		fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
		// 3、在 Convert 中添加配置信息;
		fastConverter.setFastJsonConfig(fastJsonConfig);
		// 4、
		HttpMessageConverter<?> converter = fastConverter;
		return new HttpMessageConverters(converter);
	}
}
